<!DOCTYPE html>
<html lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>apply_metrology_model [HALCON算子参考手册]</title>
<style type="text/css">
      body {
    color: #000000;
    background-color: #ffffff;
    margin: 0;
    font-family: Arial, Helvetica, sans-serif;
}

.body_main {
    margin-left: 35px;
    margin-right: 35px;
}

@media screen and (min-width:992px) {

    .body_main {
        margin-left: 10%;
        margin-right: 10%;
    }

    table.toctable {
        width: 80%
    }
}

@media screen and (min-width:1400px) {

    .body_main {
        margin-left: 15%;
        margin-right: 15%;
    }

    table.toctable {
        width: 70%
    }
}

body>div ul ul {
    margin-left: inherit;
}

a:link {
    color: #0044cc;
}

a:link,
a:visited {
    text-decoration: none;
}

a:link:hover,
a:visited:hover {
    text-decoration: underline;
}

th {
    text-align: left;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    text-rendering: optimizeLegibility;
    color: #666666;
}

code {
    font-family: monospace,monospace;
}

h1 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

h2 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

hr {
    border: 0;
    border-top: solid 1px #f28d26;
}

.pre {
    display: block;
    padding-bottom: 1ex;
    font-family: monospace;
    white-space: pre;
}

pre {
    font-family: monospace, monospace;
    padding: 1ex;
    white-space: pre-wrap;
}

.toc {
    font-size: 80%;
    border-top: 1px dashed #f28d26;
    border-bottom: 1px dashed #f28d26;
    padding-top: 5px;
    padding-bottom: 5px;
}

.inv {
    margin: 0;
    border: 0;
    padding: 0;
}

.banner {
    color: #666666;
    padding-left: 1em;
}

.logo {
    background-color: white;
}

.keyboard {
    font-size: 80%;
    padding-left: 3px;
    padding-right: 3px;
    border-radius: 5px;
    border-width: 1px;
    border-style: solid;
    border-color: #f28d26;
    background-color: #f3f3f3;
}

.warning {
    margin-top: 2ex;
    margin-bottom: 1ex;
    padding: 10px;
    text-align: center;
    border: 1px solid;
    color: #bb0000;
    background-color: #fff7f7
}

.imprint {
    margin-top: 1ex;
    font-size: 80%;
    color: #666666;
}

.imprinthead {
    font-weight: bolder;
    color: #666666;
}

.indexlink {
    text-align: right;
    padding-bottom: 5px;
}

.postscript {
    margin-top: 2ex;
    font-size: 80%;
    color: #666666
}

.evenrow {
    background-color: #e7e7ef;
    vertical-align: top;
}

.oddrow {
    background-color: #f7f7ff;
    vertical-align: top;
}

.headrow {
    background-color: #97979f;
    color: #ffffff;
    vertical-align: top;
}

.logorow {
    vertical-align: top;
}

.error {
    color: red;
}

.var {
    font-style: italic
}

.halconoperator {
    font-family: monospace, monospace;
}

span.operator {
    font-family: monospace, monospace;
}

span.procedure {
    font-family: monospace, monospace;
}

span.operation {
    font-family: monospace, monospace;
}

span.feature {
    font-family: Arial, Helvetica, Homerton, sans-serif;
}

ul {
    padding-left: 1.2em;
}

li.dot {
    list-style-type: square;
    color: #f28d26;
}

.breadcrumb {
    font-size: 80%;
    color: white;
    background-color: #062d64;
    margin-bottom: 20px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 15px;
}

.webbar {
    font-size: 80%;
    background-color: #dddddd;
    margin-top: 0px;
    margin-left: -35px;
    margin-right: -35px;
    margin-bottom: 0px;
    padding-top: 5px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 5px;
}

.footer {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    border-top: 1px dashed #f28d26;
    font-size: 80%;
    color: #666666;
    padding-bottom: 8px;
}

.footer .socialmedia a {
    padding-left: 7px;
}

.socialmedia {
    padding-top: 10px;
}

.copyright {
    margin-top: 19px;
}

.breadcrumb a {
    color: #ffffff;
    border-bottom: 1px solid white;
}

.breadcrumb a:link:hover,
.breadcrumb a:visited:hover {
    text-decoration: none;
    border-bottom: none;
}

.heading {
    margin-top: 1ex;
    font-size: 110%;
    font-weight: bold;
    color: #666666;
}

.text {
    color: black;
}

.example {
    font-size: 80%;
    background-color: #f3f3f3;
    border: 1px dashed #666666;
    padding: 10px;
}

.displaymath {
    display: block;
    text-align: center;
    margin-top: 1ex;
    margin-bottom: 1ex;
}

.title {
    float: left;
    padding-top: 3px;
    padding-bottom: 3px;
}

.signnote {
    font-family: Arial, Helvetica, Homerton, sans-serif;
    font-size: 80%;
    color: #666666;
    font-weight: lighter;
    font-style: italic
}

.par {
    margin-bottom: 1.5em;
}

.parhead {
    text-align: right;
}

.parname {
    float: left;
}

.pardesc {
    font-size: 85%;
    margin-top: 0.5em;
    margin-bottom: 0.5em;
    margin-left: 2em;
}

.parcat {
    color: #666;
    font-weight: bold;
}

*[data-if=cpp],
*[data-if=c],
*[data-if=dotnet],
*[data-if=com],
*[data-if=python] {
    display: none;
}

.tabbar {
    text-align: right;
    border-bottom: 1px solid #f28d26;
    margin-bottom: 0.5em;
}

ul.tabs {
    padding-top: 3px;
    padding-bottom: 3px;
    margin-top: 10px;
    margin-bottom: 0;
    font-size: 80%
}

ul.tabs li {
    padding-top: 3px;
    padding-bottom: 3px;
    display: inline;
    overflow: hidden;
    list-style-type: none;
    margin: 0;
    margin-left: 8px;
    border-top: 1px solid #666;
    border-left: 1px solid #666;
    border-right: 1px solid #666;
}

ul.tabs li.active {
    border-left: 1px solid #f28d26;
    border-right: 1px solid #f28d26;
    border-top: 1px solid #f28d26;
    border-bottom: 1px solid #fff;
}

ul.tabs li.inactive {
    background-color: #eee;
}

ul.tabs li a {
    padding-left: 5px;
    padding-right: 5px;
    color: #666;
}

ul.tabs li a:link:hover {
    text-decoration: none;
}

ul.tabs li.inactive a {
    color: #666;
}

ul.tabs li.active a {
    color: black;
}

dl.generic dd {
    margin-bottom: 1em;
}

.pari {
    color: olive;
}

.paro {
    color: maroon;
}

.comment {
    font-size: 80%;
    color: green;
    white-space: nowrap;
}

table.grid {
    border-collapse: collapse;
}

table.grid td {
    padding: 5px;
    border: 1px solid;
}

table.layout {
    border: 0px;
}

table.layout td {
    padding: 5px;
}

table.table {
    border-collapse: collapse;
}

table.table td {
    padding: 5px;
    border-left: 0px;
    border-right: 0px;
}

table.table tr:last-child {
    border-bottom: 1px solid;
}

table.table th {
    padding: 5px;
    border-top: 1px solid;
    border-bottom: 1px solid;
    border-left: 0px;
    border-right: 0px;
}

.details_summary {
    cursor: pointer;
}

table.toctable {
    width: 100%;
}

table.toctable col:first-child {
    width: 20%;
}

table.toctable col:nth-last-child(2) {
    width: 8%;
}

table.altcolored tr:nth-child(even) {
    background-color: #f3f3f3;
}

    </style>
<!--OP_REF_STYLE_END-->
<script>
    <!--
var active_lang='hdevelop';function switchVisibility(obj,active_lang,new_lang)
{var display_style='inline';
for(var i=0;i<obj.length;i++)
{if(obj.item(i).getAttribute('data-if')==new_lang)
{obj.item(i).style.display=display_style;}
if(obj.item(i).getAttribute('data-if')==active_lang)
{obj.item(i).style.display='none';}}
return;}
function toggleLanguage(new_lang,initial)
{if(active_lang!=new_lang)
{var lis=document.getElementsByTagName('li');for(var i=0;i<lis.length;i++)
{if(lis.item(i).id=='syn-'+new_lang)
{lis.item(i).className='active';}
else
{lis.item(i).className='inactive';}}
var divs=document.getElementsByTagName('div');var spans=document.getElementsByTagName('span');switchVisibility(divs,active_lang,new_lang);switchVisibility(spans,active_lang,new_lang);if(!initial)
{setCookie("halcon_reference_language",new_lang,null,null);}
active_lang=new_lang;}
return;}
function setCookie(name,value,domain,exp_offset,path,secure)
{localStorage.setItem(name,value);}
function getCookie(name)
{return localStorage.getItem(name);}
function initialize()
{var qs=location.href.split('?')[1];var qs_lang_raw=location.href.split('interface=')[1];var qs_lang;if(qs_lang_raw)
{qs_lang=qs_lang_raw.split('#')[0];}
var cookie_lang=getCookie("halcon_reference_language");var new_lang;if((qs_lang=="hdevelop")||(qs_lang=="dotnet")||(qs_lang=="python")||(qs_lang=="cpp")||(qs_lang=="c"))
{new_lang=qs_lang;setCookie("halcon_reference_language",new_lang,null,null);}
else if((cookie_lang=="hdevelop")||(cookie_lang=="dotnet")||(cookie_lang=="python")||(cookie_lang=="cpp")||(cookie_lang=="c"))
{new_lang=cookie_lang;}
else
{new_lang="hdevelop";}
toggleLanguage(new_lang,1);return;}
-->

  </script>
</head>
<body onload="initialize();">
<div class="breadcrumb">
<br class="inv"><a href="index.html">目录</a> / <a href="toc_2dmetrology.html">2D 度量</a><br class="inv">
</div>
<div class="body_main">
<div class="tabbar"><ul class="tabs">
<li id="syn-hdevelop" class="active"><a href="javascript:void(0);" onclick="toggleLanguage('hdevelop')" onfocus="blur()">HDevelop</a></li>
<li id="syn-dotnet" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('dotnet')" onfocus="blur()">.NET</a></li>
<li id="syn-python" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('python')" onfocus="blur()">Python</a></li>
<li id="syn-cpp" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('cpp')" onfocus="blur()">C++</a></li>
<li id="syn-c" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('c')" onfocus="blur()">C</a></li>
</ul></div>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<!--OP_REF_HEADER_END-->
<h1 id="sec_name">
<span data-if="hdevelop" style="display:inline;">apply_metrology_model</span><span data-if="c" style="display:none;">T_apply_metrology_model</span><span data-if="cpp" style="display:none;">ApplyMetrologyModel</span><span data-if="dotnet" style="display:none;">ApplyMetrologyModel</span><span data-if="python" style="display:none;">apply_metrology_model</span> (算子名称)</h1>
<h2>名称</h2>
<p><code><span data-if="hdevelop" style="display:inline;">apply_metrology_model</span><span data-if="c" style="display:none;">T_apply_metrology_model</span><span data-if="cpp" style="display:none;">ApplyMetrologyModel</span><span data-if="dotnet" style="display:none;">ApplyMetrologyModel</span><span data-if="python" style="display:none;">apply_metrology_model</span></code> — Measure and fit the geometric shapes of all metrology objects of
a metrology model.</p>
<h2 id="sec_synopsis">参数签名</h2>
<div data-if="hdevelop" style="display:inline;">
<p>
<code><b>apply_metrology_model</b>(<a href="#Image"><i>Image</i></a> :  : <a href="#MetrologyHandle"><i>MetrologyHandle</i></a> : )</code></p>
</div>
<div data-if="c" style="display:none;">
<p>
<code>Herror <b>T_apply_metrology_model</b>(const Hobject <a href="#Image"><i>Image</i></a>, const Htuple <a href="#MetrologyHandle"><i>MetrologyHandle</i></a>)</code></p>
</div>
<div data-if="cpp" style="display:none;">
<p>
<code>void <b>ApplyMetrologyModel</b>(const HObject&amp; <a href="#Image"><i>Image</i></a>, const HTuple&amp; <a href="#MetrologyHandle"><i>MetrologyHandle</i></a>)</code></p>
<p>
<code>void <a href="HMetrologyModel.html">HMetrologyModel</a>::<b>ApplyMetrologyModel</b>(const HImage&amp; <a href="#Image"><i>Image</i></a>) const</code></p>
</div>
<div data-if="com" style="display:none;"></div>
<div data-if="dotnet" style="display:none;">
<p>
<code>static void <a href="HOperatorSet.html">HOperatorSet</a>.<b>ApplyMetrologyModel</b>(<a href="HObject.html">HObject</a> <a href="#Image"><i>image</i></a>, <a href="HTuple.html">HTuple</a> <a href="#MetrologyHandle"><i>metrologyHandle</i></a>)</code></p>
<p>
<code>void <a href="HMetrologyModel.html">HMetrologyModel</a>.<b>ApplyMetrologyModel</b>(<a href="HImage.html">HImage</a> <a href="#Image"><i>image</i></a>)</code></p>
</div>
<div data-if="python" style="display:none;">
<p>
<code>def <b>apply_metrology_model</b>(<a href="#Image"><i>image</i></a>: HObject, <a href="#MetrologyHandle"><i>metrology_handle</i></a>: HHandle) -&gt; None</code></p>
</div>
<h2 id="sec_description">描述</h2>
<p><code><span data-if="hdevelop" style="display:inline">apply_metrology_model</span><span data-if="c" style="display:none">apply_metrology_model</span><span data-if="cpp" style="display:none">ApplyMetrologyModel</span><span data-if="com" style="display:none">ApplyMetrologyModel</span><span data-if="dotnet" style="display:none">ApplyMetrologyModel</span><span data-if="python" style="display:none">apply_metrology_model</span></code> locates the edges inside the
measure regions of the metrology objects of the metrology model
<a href="#MetrologyHandle"><i><code><span data-if="hdevelop" style="display:inline">MetrologyHandle</span><span data-if="c" style="display:none">MetrologyHandle</span><span data-if="cpp" style="display:none">MetrologyHandle</span><span data-if="com" style="display:none">MetrologyHandle</span><span data-if="dotnet" style="display:none">metrologyHandle</span><span data-if="python" style="display:none">metrology_handle</span></code></i></a> within <a href="#Image"><i><code><span data-if="hdevelop" style="display:inline">Image</span><span data-if="c" style="display:none">Image</span><span data-if="cpp" style="display:none">Image</span><span data-if="com" style="display:none">Image</span><span data-if="dotnet" style="display:none">image</span><span data-if="python" style="display:none">image</span></code></i></a> and fits the
corresponding geometric shapes to the resulting edge positions.
</p>
<p>For an explanation of the concept of 2D 度量 see the
introduction of chapter <a href="toc_2dmetrology.html">2D 度量</a>.
</p>
<p>The measurements are performed as follows:
</p>
<p><b>Determining the edge positions</b>
</p>
<p>Within the measure regions of the metrology objects,
the positions of the edges are determined. The edge location is
calculated internally with 该算子 <a href="measure_pos.html"><code><span data-if="hdevelop" style="display:inline">measure_pos</span><span data-if="c" style="display:none">measure_pos</span><span data-if="cpp" style="display:none">MeasurePos</span><span data-if="com" style="display:none">MeasurePos</span><span data-if="dotnet" style="display:none">MeasurePos</span><span data-if="python" style="display:none">measure_pos</span></code></a> or
<a href="fuzzy_measure_pos.html"><code><span data-if="hdevelop" style="display:inline">fuzzy_measure_pos</span><span data-if="c" style="display:none">fuzzy_measure_pos</span><span data-if="cpp" style="display:none">FuzzyMeasurePos</span><span data-if="com" style="display:none">FuzzyMeasurePos</span><span data-if="dotnet" style="display:none">FuzzyMeasurePos</span><span data-if="python" style="display:none">fuzzy_measure_pos</span></code></a>.  The latter is used if at least one
fuzzy function was set for the metrology objects with
<a href="set_metrology_object_fuzzy_param.html"><code><span data-if="hdevelop" style="display:inline">set_metrology_object_fuzzy_param</span><span data-if="c" style="display:none">set_metrology_object_fuzzy_param</span><span data-if="cpp" style="display:none">SetMetrologyObjectFuzzyParam</span><span data-if="com" style="display:none">SetMetrologyObjectFuzzyParam</span><span data-if="dotnet" style="display:none">SetMetrologyObjectFuzzyParam</span><span data-if="python" style="display:none">set_metrology_object_fuzzy_param</span></code></a>.
</p>
<p><b>Fitting geometric shapes to the edge positions</b>
</p>
<p>The geometric shapes of the metrology objects are
adapted to fit optimally to the resulting edge positions. In
particular, a RANSAC algorithm is used to select a set of initial
edge positions that is necessary to create an instance of the specific
geometric shape, e.g., three edge positions are selected for a
metrology object of type circle.  Then, those edge positions that are
near the corresponding instance of the geometric shape are determined
and, if
the number of suitable edge positions is sufficient (see the generic
parameter <i><span data-if="hdevelop" style="display:inline">'min_score'</span><span data-if="c" style="display:none">"min_score"</span><span data-if="cpp" style="display:none">"min_score"</span><span data-if="com" style="display:none">"min_score"</span><span data-if="dotnet" style="display:none">"min_score"</span><span data-if="python" style="display:none">"min_score"</span></i> of <a href="set_metrology_object_param.html"><code><span data-if="hdevelop" style="display:inline">set_metrology_object_param</span><span data-if="c" style="display:none">set_metrology_object_param</span><span data-if="cpp" style="display:none">SetMetrologyObjectParam</span><span data-if="com" style="display:none">SetMetrologyObjectParam</span><span data-if="dotnet" style="display:none">SetMetrologyObjectParam</span><span data-if="python" style="display:none">set_metrology_object_param</span></code></a>),
are selected for the final fitting of the geometric shape. If the
number of suitable edge positions is not sufficient, another set of
initial edge positions is tested until a suitable selection of edge
positions is found.  Into the edge positions that are selected for the
final fitting, the geometric shape is fitted and its parameters are
stored in the metrology model. Note that more than one instance for
each metrology object is returned if the generic parameter
<i><span data-if="hdevelop" style="display:inline">'num_instances'</span><span data-if="c" style="display:none">"num_instances"</span><span data-if="cpp" style="display:none">"num_instances"</span><span data-if="com" style="display:none">"num_instances"</span><span data-if="dotnet" style="display:none">"num_instances"</span><span data-if="python" style="display:none">"num_instances"</span></i> is set to value larger than 1. This
and other parameters can be set when adding the metrology objects to the
metrology model or separately with 该算子
<a href="set_metrology_object_param.html"><code><span data-if="hdevelop" style="display:inline">set_metrology_object_param</span><span data-if="c" style="display:none">set_metrology_object_param</span><span data-if="cpp" style="display:none">SetMetrologyObjectParam</span><span data-if="com" style="display:none">SetMetrologyObjectParam</span><span data-if="dotnet" style="display:none">SetMetrologyObjectParam</span><span data-if="python" style="display:none">set_metrology_object_param</span></code></a>. Note that for each instance of
the metrology object different initial edge positions are used, i.e., a
second instance is based on edge positions that were not already used
for the fitting of the first instance.
The algorithm stops either when <i><span data-if="hdevelop" style="display:inline">'num_instances'</span><span data-if="c" style="display:none">"num_instances"</span><span data-if="cpp" style="display:none">"num_instances"</span><span data-if="com" style="display:none">"num_instances"</span><span data-if="dotnet" style="display:none">"num_instances"</span><span data-if="python" style="display:none">"num_instances"</span></i>
instances were found or if the remaining number of suitable initial edge
positions is too low for a further fitting of the geometric shape.
</p>
<p><b>Accessing the results</b>
</p>
<p>The results of the measurements can be accessed from the metrology
model using <a href="get_metrology_object_result.html"><code><span data-if="hdevelop" style="display:inline">get_metrology_object_result</span><span data-if="c" style="display:none">get_metrology_object_result</span><span data-if="cpp" style="display:none">GetMetrologyObjectResult</span><span data-if="com" style="display:none">GetMetrologyObjectResult</span><span data-if="dotnet" style="display:none">GetMetrologyObjectResult</span><span data-if="python" style="display:none">get_metrology_object_result</span></code></a>.  Note that if more than one
instance of an object is returned, the order of the returned instances
is arbitrary and therefore no measure for the quality of the
fitting.  Note further that if the parameters <i><span data-if="hdevelop" style="display:inline">'camera_param'</span><span data-if="c" style="display:none">"camera_param"</span><span data-if="cpp" style="display:none">"camera_param"</span><span data-if="com" style="display:none">"camera_param"</span><span data-if="dotnet" style="display:none">"camera_param"</span><span data-if="python" style="display:none">"camera_param"</span></i>
and <i><span data-if="hdevelop" style="display:inline">'plane_pose'</span><span data-if="c" style="display:none">"plane_pose"</span><span data-if="cpp" style="display:none">"plane_pose"</span><span data-if="com" style="display:none">"plane_pose"</span><span data-if="dotnet" style="display:none">"plane_pose"</span><span data-if="python" style="display:none">"plane_pose"</span></i> were set for the metrology model using
<a href="set_metrology_model_param.html"><code><span data-if="hdevelop" style="display:inline">set_metrology_model_param</span><span data-if="c" style="display:none">set_metrology_model_param</span><span data-if="cpp" style="display:none">SetMetrologyModelParam</span><span data-if="com" style="display:none">SetMetrologyModelParam</span><span data-if="dotnet" style="display:none">SetMetrologyModelParam</span><span data-if="python" style="display:none">set_metrology_model_param</span></code></a>, world
coordinates are used for the fitting. Otherwise, image coordinates
are used. The XLD contours for the measured objects can be
obtained using <a href="get_metrology_object_result_contour.html"><code><span data-if="hdevelop" style="display:inline">get_metrology_object_result_contour</span><span data-if="c" style="display:none">get_metrology_object_result_contour</span><span data-if="cpp" style="display:none">GetMetrologyObjectResultContour</span><span data-if="com" style="display:none">GetMetrologyObjectResultContour</span><span data-if="dotnet" style="display:none">GetMetrologyObjectResultContour</span><span data-if="python" style="display:none">get_metrology_object_result_contour</span></code></a>.</p>
<h2 id="sec_attention">注意</h2>
<p>Note that all measure regions of all metrology objects
must be recomputed if the width or the height of the input
<a href="#Image"><i><code><span data-if="hdevelop" style="display:inline">Image</span><span data-if="c" style="display:none">Image</span><span data-if="cpp" style="display:none">Image</span><span data-if="com" style="display:none">Image</span><span data-if="dotnet" style="display:none">image</span><span data-if="python" style="display:none">image</span></code></i></a> is not equal to the width and height stored in the
metrology object (e.g., set with <a href="set_metrology_model_image_size.html"><code><span data-if="hdevelop" style="display:inline">set_metrology_model_image_size</span><span data-if="c" style="display:none">set_metrology_model_image_size</span><span data-if="cpp" style="display:none">SetMetrologyModelImageSize</span><span data-if="com" style="display:none">SetMetrologyModelImageSize</span><span data-if="dotnet" style="display:none">SetMetrologyModelImageSize</span><span data-if="python" style="display:none">set_metrology_model_image_size</span></code></a>).
This leads to longer execution times of 该算子.
</p>
<p>Note further that <code><span data-if="hdevelop" style="display:inline">apply_metrology_model</span><span data-if="c" style="display:none">apply_metrology_model</span><span data-if="cpp" style="display:none">ApplyMetrologyModel</span><span data-if="com" style="display:none">ApplyMetrologyModel</span><span data-if="dotnet" style="display:none">ApplyMetrologyModel</span><span data-if="python" style="display:none">apply_metrology_model</span></code> ignores the domain
of <a href="#Image"><i><code><span data-if="hdevelop" style="display:inline">Image</span><span data-if="c" style="display:none">Image</span><span data-if="cpp" style="display:none">Image</span><span data-if="com" style="display:none">Image</span><span data-if="dotnet" style="display:none">image</span><span data-if="python" style="display:none">image</span></code></i></a> for efficiency reasons (see also
<a href="measure_pos.html"><code><span data-if="hdevelop" style="display:inline">measure_pos</span><span data-if="c" style="display:none">measure_pos</span><span data-if="cpp" style="display:none">MeasurePos</span><span data-if="com" style="display:none">MeasurePos</span><span data-if="dotnet" style="display:none">MeasurePos</span><span data-if="python" style="display:none">measure_pos</span></code></a>).
</p>
<h2 id="sec_execution">运行信息</h2>
<ul>
  <li>多线程类型:可重入(与非独占操作符并行运行)。</li>
<li>多线程作用域:全局(可以从任何线程调用)。</li>
  <li>未经并行化处理。</li>
</ul>
<p>This operator modifies the state of the following input parameter:</p>
<ul><li><a href="#MetrologyHandle"><span data-if="hdevelop" style="display:inline">MetrologyHandle</span><span data-if="c" style="display:none">MetrologyHandle</span><span data-if="cpp" style="display:none">MetrologyHandle</span><span data-if="com" style="display:none">MetrologyHandle</span><span data-if="dotnet" style="display:none">metrologyHandle</span><span data-if="python" style="display:none">metrology_handle</span></a></li></ul>
<p>During execution of this operator, access to the value of this parameter must be synchronized if it is used across multiple threads.</p>
<h2 id="sec_parameters">参数表</h2>
  <div class="par">
<div class="parhead">
<span id="Image" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Image</span><span data-if="c" style="display:none">Image</span><span data-if="cpp" style="display:none">Image</span><span data-if="com" style="display:none">Image</span><span data-if="dotnet" style="display:none">image</span><span data-if="python" style="display:none">image</span></code></b> (input_object)  </span><span>singlechannelimage <code>→</code> <span data-if="hdevelop" style="display:inline">object</span><span data-if="dotnet" style="display:none"><a href="HImage.html">HImage</a></span><span data-if="python" style="display:none">HObject</span><span data-if="cpp" style="display:none"><a href="HImage.html">HImage</a></span><span data-if="c" style="display:none">Hobject</span> (byte / uint2 / real)</span>
</div>
<p class="pardesc">Input image.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="MetrologyHandle" class="parname"><b><code><span data-if="hdevelop" style="display:inline">MetrologyHandle</span><span data-if="c" style="display:none">MetrologyHandle</span><span data-if="cpp" style="display:none">MetrologyHandle</span><span data-if="com" style="display:none">MetrologyHandle</span><span data-if="dotnet" style="display:none">metrologyHandle</span><span data-if="python" style="display:none">metrology_handle</span></code></b> (input_control, state is modified)  </span><span>metrology_model <code>→</code> <span data-if="dotnet" style="display:none"><a href="HMetrologyModel.html">HMetrologyModel</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">HHandle</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (handle)</span><span data-if="dotnet" style="display:none"> (<i>IntPtr</i>)</span><span data-if="cpp" style="display:none"> (<i>HHandle</i>)</span><span data-if="c" style="display:none"> (<i>handle</i>)</span></span>
</div>
<p class="pardesc">Handle of the metrology model.</p>
</div>
<h2 id="sec_result">结果</h2>
<p>如果参数均有效，算子
<code><span data-if="hdevelop" style="display:inline">apply_metrology_model</span><span data-if="c" style="display:none">apply_metrology_model</span><span data-if="cpp" style="display:none">ApplyMetrologyModel</span><span data-if="com" style="display:none">ApplyMetrologyModel</span><span data-if="dotnet" style="display:none">ApplyMetrologyModel</span><span data-if="python" style="display:none">apply_metrology_model</span></code> 返回值 <TT>2</TT> (
      <TT>H_MSG_TRUE</TT>)
    .  If
necessary, an exception is raised.</p>
<h2 id="sec_predecessors">可能的前置算子</h2>
<p>
<code><a href="add_metrology_object_generic.html"><span data-if="hdevelop" style="display:inline">add_metrology_object_generic</span><span data-if="c" style="display:none">add_metrology_object_generic</span><span data-if="cpp" style="display:none">AddMetrologyObjectGeneric</span><span data-if="com" style="display:none">AddMetrologyObjectGeneric</span><span data-if="dotnet" style="display:none">AddMetrologyObjectGeneric</span><span data-if="python" style="display:none">add_metrology_object_generic</span></a></code>, 
<code><a href="add_metrology_object_circle_measure.html"><span data-if="hdevelop" style="display:inline">add_metrology_object_circle_measure</span><span data-if="c" style="display:none">add_metrology_object_circle_measure</span><span data-if="cpp" style="display:none">AddMetrologyObjectCircleMeasure</span><span data-if="com" style="display:none">AddMetrologyObjectCircleMeasure</span><span data-if="dotnet" style="display:none">AddMetrologyObjectCircleMeasure</span><span data-if="python" style="display:none">add_metrology_object_circle_measure</span></a></code>, 
<code><a href="add_metrology_object_ellipse_measure.html"><span data-if="hdevelop" style="display:inline">add_metrology_object_ellipse_measure</span><span data-if="c" style="display:none">add_metrology_object_ellipse_measure</span><span data-if="cpp" style="display:none">AddMetrologyObjectEllipseMeasure</span><span data-if="com" style="display:none">AddMetrologyObjectEllipseMeasure</span><span data-if="dotnet" style="display:none">AddMetrologyObjectEllipseMeasure</span><span data-if="python" style="display:none">add_metrology_object_ellipse_measure</span></a></code>, 
<code><a href="add_metrology_object_line_measure.html"><span data-if="hdevelop" style="display:inline">add_metrology_object_line_measure</span><span data-if="c" style="display:none">add_metrology_object_line_measure</span><span data-if="cpp" style="display:none">AddMetrologyObjectLineMeasure</span><span data-if="com" style="display:none">AddMetrologyObjectLineMeasure</span><span data-if="dotnet" style="display:none">AddMetrologyObjectLineMeasure</span><span data-if="python" style="display:none">add_metrology_object_line_measure</span></a></code>, 
<code><a href="add_metrology_object_rectangle2_measure.html"><span data-if="hdevelop" style="display:inline">add_metrology_object_rectangle2_measure</span><span data-if="c" style="display:none">add_metrology_object_rectangle2_measure</span><span data-if="cpp" style="display:none">AddMetrologyObjectRectangle2Measure</span><span data-if="com" style="display:none">AddMetrologyObjectRectangle2Measure</span><span data-if="dotnet" style="display:none">AddMetrologyObjectRectangle2Measure</span><span data-if="python" style="display:none">add_metrology_object_rectangle2_measure</span></a></code>, 
<code><a href="align_metrology_model.html"><span data-if="hdevelop" style="display:inline">align_metrology_model</span><span data-if="c" style="display:none">align_metrology_model</span><span data-if="cpp" style="display:none">AlignMetrologyModel</span><span data-if="com" style="display:none">AlignMetrologyModel</span><span data-if="dotnet" style="display:none">AlignMetrologyModel</span><span data-if="python" style="display:none">align_metrology_model</span></a></code>, 
<code><a href="set_metrology_model_param.html"><span data-if="hdevelop" style="display:inline">set_metrology_model_param</span><span data-if="c" style="display:none">set_metrology_model_param</span><span data-if="cpp" style="display:none">SetMetrologyModelParam</span><span data-if="com" style="display:none">SetMetrologyModelParam</span><span data-if="dotnet" style="display:none">SetMetrologyModelParam</span><span data-if="python" style="display:none">set_metrology_model_param</span></a></code>, 
<code><a href="set_metrology_object_param.html"><span data-if="hdevelop" style="display:inline">set_metrology_object_param</span><span data-if="c" style="display:none">set_metrology_object_param</span><span data-if="cpp" style="display:none">SetMetrologyObjectParam</span><span data-if="com" style="display:none">SetMetrologyObjectParam</span><span data-if="dotnet" style="display:none">SetMetrologyObjectParam</span><span data-if="python" style="display:none">set_metrology_object_param</span></a></code>
</p>
<h2 id="sec_successors">可能的后置算子</h2>
<p>
<code><a href="get_metrology_object_result.html"><span data-if="hdevelop" style="display:inline">get_metrology_object_result</span><span data-if="c" style="display:none">get_metrology_object_result</span><span data-if="cpp" style="display:none">GetMetrologyObjectResult</span><span data-if="com" style="display:none">GetMetrologyObjectResult</span><span data-if="dotnet" style="display:none">GetMetrologyObjectResult</span><span data-if="python" style="display:none">get_metrology_object_result</span></a></code>, 
<code><a href="get_metrology_object_result_contour.html"><span data-if="hdevelop" style="display:inline">get_metrology_object_result_contour</span><span data-if="c" style="display:none">get_metrology_object_result_contour</span><span data-if="cpp" style="display:none">GetMetrologyObjectResultContour</span><span data-if="com" style="display:none">GetMetrologyObjectResultContour</span><span data-if="dotnet" style="display:none">GetMetrologyObjectResultContour</span><span data-if="python" style="display:none">get_metrology_object_result_contour</span></a></code>, 
<code><a href="get_metrology_object_measures.html"><span data-if="hdevelop" style="display:inline">get_metrology_object_measures</span><span data-if="c" style="display:none">get_metrology_object_measures</span><span data-if="cpp" style="display:none">GetMetrologyObjectMeasures</span><span data-if="com" style="display:none">GetMetrologyObjectMeasures</span><span data-if="dotnet" style="display:none">GetMetrologyObjectMeasures</span><span data-if="python" style="display:none">get_metrology_object_measures</span></a></code>
</p>
<h2 id="sec_see">参考其它</h2>
<p>
<code><a href="set_metrology_object_fuzzy_param.html"><span data-if="hdevelop" style="display:inline">set_metrology_object_fuzzy_param</span><span data-if="c" style="display:none">set_metrology_object_fuzzy_param</span><span data-if="cpp" style="display:none">SetMetrologyObjectFuzzyParam</span><span data-if="com" style="display:none">SetMetrologyObjectFuzzyParam</span><span data-if="dotnet" style="display:none">SetMetrologyObjectFuzzyParam</span><span data-if="python" style="display:none">set_metrology_object_fuzzy_param</span></a></code>, 
<code><a href="read_metrology_model.html"><span data-if="hdevelop" style="display:inline">read_metrology_model</span><span data-if="c" style="display:none">read_metrology_model</span><span data-if="cpp" style="display:none">ReadMetrologyModel</span><span data-if="com" style="display:none">ReadMetrologyModel</span><span data-if="dotnet" style="display:none">ReadMetrologyModel</span><span data-if="python" style="display:none">read_metrology_model</span></a></code>, 
<code><a href="write_metrology_model.html"><span data-if="hdevelop" style="display:inline">write_metrology_model</span><span data-if="c" style="display:none">write_metrology_model</span><span data-if="cpp" style="display:none">WriteMetrologyModel</span><span data-if="com" style="display:none">WriteMetrologyModel</span><span data-if="dotnet" style="display:none">WriteMetrologyModel</span><span data-if="python" style="display:none">write_metrology_model</span></a></code>
</p>
<h2 id="sec_module">模块</h2>
<p>
2D 度量</p>
<!--OP_REF_FOOTER_START-->
<hr>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<div class="footer">
<div class="copyright">HALCON算子参考手册 Copyright © 2015-2023 51Halcon</div>
</div>
</div>
</body>
</html>
